package com.xunk.scene.mapper;

import com.xunk.scene.domain.PeriodSceneResultEntity;
import com.xunk.scene.domain.SceneResultExec;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ProjectName: HIM
 * @Package: com.xunk.scene.mapper
 * @ClassName: SceneResultMapper
 * @Author: luanzhiwei
 * @Description: 场景执行结果表映射接口
 * @Date: 2021/5/6 10:05
 * @Version: 1.0
 */
public interface SceneResultExecMapper {
    /**
     * 查询场景执行结果表
     *
     * @param id 场景执行结果表ID
     * @return 场景执行结果表
     */
    SceneResultExec selectSceneResultById(Long id);

    /**
     * 根据家庭id查询全部执行日志id列表
     *
     * @param homeId
     * @return
     */
    List<Long> selectIdListByHomeId(@Param("homeId") Long homeId);


    /**
     * 查询场景执行结果表列表
     *
     * @param sceneResultExec 场景执行结果表
     * @return 场景执行结果表集合
     */
    List<SceneResultExec> selectSceneResultList(SceneResultExec sceneResultExec);

    /**
     * 分页查询执行结果列表，并按照时间分组倒序
     *
     * @param homeId
     * @return
     */
    List<String> selectSceneResultPaging(@Param("homeId") Long homeId);

    /**
     * 根据homeId查询指定范围内日志记录
     *
     * @param homeId
     * @param startDate
     * @param endDate
     * @return
     */
    List<PeriodSceneResultEntity> selectPeriodSceneResult(@Param("homeId") Long homeId,
                                                          @Param("startDate") String startDate,
                                                          @Param("endDate") String endDate);

    /**
     * 新增场景执行结果表
     *
     * @param sceneResultExec 场景执行结果表
     * @return 结果
     */
    int insertSceneResult(SceneResultExec sceneResultExec);

    /**
     * 修改场景执行结果表
     *
     * @param sceneResultExec 场景执行结果表
     * @return 结果
     */
    int updateSceneResult(SceneResultExec sceneResultExec);

    /**
     * 删除场景执行结果表
     *
     * @param id 场景执行结果表ID
     * @return 结果
     */
    int deleteSceneResultById(Long id);

    /**
     * 批量删除场景执行结果表
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    int deleteSceneResultByIds(long[] ids);

    /**
     * 更新sceneId
     *
     * @param oldId
     * @param sceneId
     * @return
     */
    int updateSceneId(@Param("oldId") Long oldId, @Param("sceneId") Long sceneId);
}
